Storage systems, such as those for cloud storage, can store data in a cluster of multiple nodes. A node is, for example, a client, a server, a peer or some other networked entity on which data is stored and which is accessible through a network. Nodes may at times be unavailable for access from a network, for example because of maintenance of the node or network or some sort of failure in the node or network. The failure may be a hardware or software failure and may be caused, for example, by a power failure, overheating, rack failure, hard drive failure, network wiring or protocol failure, etc.
Data stored in the storage system may include data elements. A data element is any unit of data defined for processing. Typically, a data element may include one or more fields of data, depending on how the data element has been defined within a storage system.
Because nodes may become temporarily or permanently unavailable to a network, duplicate copies of data elements are often stored on multiple nodes within a storage system. For example, data elements may be fully replicated on every node of a storage system. In such a case, as long as a single node in the storage system is accessible, all the data elements are accessible.
In other storage systems, data elements may only be partially replicated. In partially replicated storage systems, data elements are replicated on more than one node of the storage system, but they are not replicated on all of the nodes of the storage system. When one or more nodes of a partially replicated storage system become unavailable, a data element may or may not become unavailable depending on the identity of the node or nodes that become unavailable and the identity of the node or nodes on which the data element is stored.